﻿//using System.Linq;
//using System.Web.Mvc;
//using KPIS.GERP.WEB.GIMS.Class;

//namespace KPIS.GERP.WEB.GIMS
//{
//    public class AccessDeniedAuthorizeAttribute : AuthorizeAttribute
//    {
//        public override void OnAuthorization(AuthorizationContext filterContext)
//        {
//            // int mock = GimsMembership.CookieUserId;

//            //// by pass /////
//            //base.OnAuthorization(filterContext);
//            //return;

//            //////////////////

//            #region New code by Akk 

//            //var currentController = GimsUtilities.ControllerName(filterContext);
//            //var currentAction = GimsUtilities.ActionName(filterContext);

//            //if (GimsUtilities.IsSameControllerAndAction("Home", currentController, "Login", currentAction))
//            //{
//            //    return;
//            //}

//            ////foreach(each action access)

//            //base.OnAuthorization(filterContext);

//            //if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
//            //{
//            //    filterContext.Result = new RedirectResult("~/Home/Login");
//            //    return;
//            //}

//            //var gerpUser = new UserService.UserServiceClient().GetUsers().FirstOrDefault(o => o.Code == filterContext.HttpContext.User.Identity.Name);
//            //if (filterContext.Result is HttpUnauthorizedResult && (gerpUser == null || !gerpUser.IsAdmin))
//            //{
//            //    filterContext.Result = new RedirectResult("~/Home/_Denied");
//            //}

//            //var menu = SiteMenuUtility.GetMenu();
//            //var bestRoleFound = string.Empty;
//            //var roleFound = string.Empty;
//            //foreach(var m in menu)
//            //{
//            //    var menuController = GimsUtilities.GetControllerName(filterContext, m.NavigateUrl);
//            //    var menuAction = GimsUtilities.GetActionName(filterContext, m.NavigateUrl);

//            //    if (Models.Class.CompareUtility.IsObjectToStringEqual(menuController, currentController) &&
//            //     Models.Class.CompareUtility.IsObjectToStringEqual(menuAction, currentAction))
//            //    {
//            //        bestRoleFound = m.Roles;
//            //        break;
//            //    }
//            //    else if (Models.Class.CompareUtility.IsObjectToStringEqual(menuController, currentController) &&
//            //   Models.Class.CompareUtility.IsObjectToStringEqual(menuAction, "Index"))
//            //    {
//            //        bestRoleFound = m.Roles;
//            //    }
//            //    else if (Models.Class.CompareUtility.IsObjectToStringEqual(menuController, currentController))
//            //    {
//            //        roleFound = m.Roles;
//            //    }
//            //}

//            //var selectedRole = !string.IsNullOrWhiteSpace(bestRoleFound) ? bestRoleFound : roleFound;
//            //if (!GimsMembership.IsInRoles(selectedRole) && (gerpUser == null || !gerpUser.IsAdmin))
//            //{
//            //    filterContext.Result = new RedirectResult("~/Home/_Denied");
//            //}

//            #endregion
//        }
//    }
//}